package xdu.lz.protocol;

import java.util.Iterator;
import java.util.Random;
import java.util.ServiceLoader;

public class ProtocolFactory {

    public static Protocol getProtocol() {
        //java spi机制，去加载配置文件META-INF-services下的配置类
        ServiceLoader<Protocol> serviceLoader
                = ServiceLoader.load(Protocol.class);
        Iterator<Protocol> iterator = serviceLoader.iterator();

        while (iterator.hasNext()){
            System.out.println("Protocol协议有：" + iterator.next());
        }

        return serviceLoader.iterator().next();

//
//        // 工厂模式
//        //这里根据vm配置传进来，也可以通过读取每个jar包的配置文件的具体实现类
//        String name = System.getProperty("protocolName");
//
//        if (name == null || name.equals("")) name = "http";
//        switch (name) {
//            case "http":
//                return new HttpProtocol();
//            case "dubbo":
//                return new DubboProtocol();
//            case "netty":
//                return new DubboProtocol();
//            default:
//                break;
//        }
//        return new HttpProtocol();
    }
}
